import store from '../store'
import {
    INCREMENTCOUNT,
    DECREMENTCOUNT
  } from '../constant/countConstant'



//累加的action
export const incrementAction = (data=1)=>{
    return{
        type:INCREMENTCOUNT,
        data
    }
}
//累减的action
export const decrementAction = (data = 1) => {
    return {
      type: DECREMENTCOUNT,
      data
    }
  }
//异步action
//28.第三步：如果像下面那样直接在一个计时器里return这个对象时，这样计时器中的代码是异步的，调用计时器外层waitIncrementAction这个函数时，一看里面是异步代码直接先不执行，返回undefined，所以组件中接收不到这个对象
// export const waitIncrementAction = (data = 1) => {
//  setTimeout(()=>{
//       return {
//         type:INCREMENTCOUNT,
//         data
//       }
      
//   },2000)
// }
//28.正确的第三步：直接在waitIncrementAction 函数中return一个回调函数,回调函数里写计时器。但这样就导致count组件中store.dispatch中接收的是一个函数，但它只能接收一个对象，这时候就要用到中间件thunk了，thunk是redux-thunk这个包里的
//28.第四步：写在store.js中
export const waitIncrementAction = (data = 1) => {
    return ()=>{
        setTimeout(()=>{
            store.dispatch({
              type:INCREMENTCOUNT,
              data
          })
        },2000)
  }
 }